/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Cone.h,v 1.2 2009/04/03 12:51:25 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Cone__
#define __Cone__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <Node.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Engine)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented cone interface.
	class Cone : public Shape
	{	
	public:
		// constructor
		Cone();
		
		// destructor
		virtual ~Cone();

		// the cone radius
		VOID radius( F32 r );
		const F32 radius() const;

		// the cone height
		VOID height( F32 h );
		const F32 height() const;

		// trace the cone
		F32 trace(const Vector3& s, const Vector3& e) const;

	private:
		// build the cone
		VOID build();
		
	private:
		F32 mRadius, mHeight;
	};

	typedef GPtr<Cone>ConePtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Cone__

//////////////////////////////////////////////////////////////////////////